package com.wwj.springboot.config;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.jboss.logging.Logger;
import org.springframework.context.annotation.Configuration;

/**
 * @author wwj
 */
@Aspect
@Configuration
public class MyAopAspectByLogDate {
    private static final Logger logger= Logger.getLogger(MyAopAspectByLogDate.class);


    @Around("execution(* com.wwj.springboot.controller..*.*(..))")
    public Object myLogger(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        //  Object target = proceedingJoinPoint.getTarget();//目标对象

        String target = proceedingJoinPoint.getSignature().toString();
        logger.info("+++++++++++++开始执行计算"+target+"方法执行时长+++++++++++++++++++");
        //前置通知（额外功能）
        long start = System.currentTimeMillis();

        //返回值就是目标方法的返回值。这个返回值哟啊被当前返回。
        //执行目标方法。放行请求。
        Object proceed = proceedingJoinPoint.proceed();

        //后置通知（额外功能）
        long time=System.currentTimeMillis()-start;
        logger.info(target+"=======================这个方法执行了时长=====================："+time);
        return proceed;
    }
}
